//--------------------------------------------------------------------------------------
// File: pch.h
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// http://go.microsoft.com/fwlink/?LinkId=248929
//--------------------------------------------------------------------------------------

#ifdef _MSC_VER
#pragma once
#endif

#ifndef UNICODE
//#error "xomp requires a Unicode build."
#endif

#include "kmp_exp.h"
#include "kmp_BaseDefs.h"

#if defined(_MSC_VER) && defined( KMPLIB_EXPORTS) || defined(_LIB) || defined( KMPLIB_IMPORTS) || defined(_DLL)
#define KMP_AUTOLIB 1
#endif

// #define KMP_AUTOLIB to automatically include the libs needed for KMP
#ifdef KMP_AUTOLIB
#pragma comment( lib, "Imm32.Lib" )
#pragma comment( lib, "Version.Lib" )
#endif


#ifdef KMPLIB_IMPORTS
#	pragma comment( lib, KMP_LIB_NAME ".lib" )
#if !defined( KMPLIB_DLL) ||  !defined( KMPLIB_STATIC)
#	pragma warning (" xomp LIB_IMPORTS import librarys aren't defined")
#endif
#endif  // KMPLIB_IMPORTS


/*
namespace_DirectX
#if (DIRECTKMP_VERSION < 305) && !defined(KMP_CALLCONV)
#define KMP_CALLCONV __fastcall
typedef const KMPVECTOR& HKMPVECTOR;
typedef const KMPMATRIX& FKMPMATRIX;
#endif
namespace_DirectX_end*/


		//--------------------------------------------------------------------------------------
		// SAL2 fixups for VS 2010
		//--------------------------------------------------------------------------------------

		/*
		#if defined(_MSC_VER) && (_MSC_VER<1610) && !defined(_In_reads_)
		#define _Analysis_assume_(exp)
		#define _In_reads_(exp)
		#define _In_reads_opt_(exp)
		#define _Out_writes_(exp)
		#define _Out_writes_opt_(exp)
		#define _In_reads_bytes_(exp)
		#define _Out_writes_bytes_(exp)
		#define _Out_writes_bytes_to_opt_(a,b)
		#define _Inout_updates_bytes_(exp)
		#define _Inout_updates_all_(exp)
		#define _Inout_updates_all_opt_(exp)
		#define _COM_Outptr_
		#define _Outptr_
		#define _Outptr_opt_
		#define _Outptr_result_z_
		#define _Outptr_opt_result_maybenull_
		#define _When_(a,b)
		#define _Acquires_lock_(exp)
		#define _Releases_lock_(exp)
		#define _Inexpressible_(exp)
		#endif*/

#if defined(_MSC_VER) && (_MSC_VER<1610) && !defined(_In_reads_)
#define _Analysis_assume_(exp) __analysis_assume(exp)
#define _In_reads_(exp) _In_count_x_(exp)
#define _In_reads_opt_(exp) _In_opt_count_x_(exp)
#define _In_reads_bytes_(exp) _In_bytecount_x_(exp)
#define _Inout_updates_(exp) _Inout_cap_x_(exp)
#define _Inout_updates_z_(exp) _Inout_z_cap_x_(exp)
#define _Inout_updates_bytes_(exp) _Inout_bytecap_x_(exp)
#define _Inout_updates_all_(exp) _Inout_z_cap_x_(exp)
#define _Inout_updates_all_opt_(exp) _Inout_opt_z_cap_x_(exp)
#define _Out_writes_(exp) _Out_cap_x_(exp)
#define _Out_writes_opt_(exp) _Out_opt_cap_x_(exp)
#define _Out_writes_bytes_(exp) _Out_bytecap_x_(exp)
#define _Out_writes_bytes_to_opt_(a,b) _Out_opt_bytecap_x_(a,b)
#define _Outptr_ _Deref_out_
#define _Outptr_opt_ _Deref_out_opt_
#define _Outptr_result_z_ _Deref_out_z_
#define _Outptr_opt_result_maybenull_ _Deref_opt_out_opt_
#define _Outptr_result_maybenull_z_ _Deref_opt_out_opt_z_
#define _Outptr_result_buffer_(exp) _Deref_post_cap_x_(exp)
#define _Outptr_result_buffer_all_maybenull_(exp) _Deref_post_opt_cap_x_(exp)
#define _COM_Outptr_ _Deref_out_
#define _When_(test,exp)
#define _Acquires_lock_(exp)
#define _Releases_lock_(exp)
#define _Inexpressible_(exp)
#endif

#ifndef _Use_decl_annotations_
#define _Use_decl_annotations_
#endif


///////////////////////////////////////////////////////////////////////////////
// omp

#include "kmp_version.h"
#include "kmp.h"

#include "kmp_io.h"
#include "kmp_str.h"

#include "kmp_environment.h"
#include "kmp_error.h"
#include "kmp_atomic.h"


#include "kmp_settings.h"

#include "kmp_wrapper_getpid.h"


#ifdef PCH_BUILD
#include "kmp_ftn_entry.h"
#include "kmp_ftn_os.h"
#endif


#include "kmp_omp.h"


#include "kmp_itt.h"






